import Vue from 'vue';

export interface HTMLVueElement extends HTMLElement {
  __vue__: Vue;
}

export interface WebpackFunction extends Function {
  cid: number;
}

export interface EsModule extends Object {
  __esModule?: boolean;
  [Symbol.toStringTag]: string;
}

export interface FrameworkDelegate {
  attachViewToDom(
    parentElement: HTMLElement,
    component: HTMLElement | WebpackFunction | object | Vue,
    opts?: object,
    classes?: string[],
  ): Promise<HTMLElement>;
  removeViewFromDom(parentElement: HTMLElement, childElement: HTMLVueElement): Promise<void>;
}
